struct alloc_struct
{
	ADDR* addr = 0;
	unsigned int length = 0;
	bool isSimObject = false;
	int simID = 0;
	bool SimObjectRegistered = false;
	bool SimObjectRegisterFailure = false;
	bool SimObjectRemoved = false;
	
	int ghostID = 0;
};

void journal_event(std::string);



//C++20 function
#include <memory>
#include <string>
#include <stdexcept>

template<typename ... Args>
std::string string_format( const std::string& format, Args ... args )
{
    int size_s = std::snprintf( nullptr, 0, format.c_str(), args ... ) + 1; // Extra space for '\0'
    if( size_s <= 0 ){ throw std::runtime_error( "Error during formatting." ); }
    auto size = static_cast<size_t>( size_s );
    std::unique_ptr<char[]> buf( new char[ size ] );
    std::snprintf( buf.get(), size, format.c_str(), args ... );
    return std::string( buf.get(), buf.get() + size - 1 ); // We don't want the '\0' inside
}
